home *** CD-ROM | disk | FTP | other *** search
- ; 68000.s for SAS/asm v6.x
- ; register parameters, small code/small data model
- ; optimized version of 68000.s
-
- SECTION code
-
- XREF _global_precision
-
- ; r1 = r1 + r2 + carry
- ; boolean P_ADDC(unitptr r1, unitptr r2, boolean carry)
- ; D0.B A0 A1 D0.B
-
- XDEF _P_ADDC
- _P_ADDC:
- move.l d2,-(sp)
- move.b d0,d1
- sne d1
- moveq.l #0,d2
- move.w _global_precision(a4),d2
- asl.l #2,d2
- add.l d2,a0
- add.l d2,a1
- asr.l #2,d2
- subq.l #1,d2
- asr.b #1,d1
- add_loop:
- addx.l -(a1),-(a0)
- dbf d2,add_loop
- scs d0
- move.l (sp)+,d2
- rts
-
- ; r1 = r1 - r2 - borrow
- ; boolean P_SUBB(unitptr r1, unitptr r2, boolean borrow)
- ; D0.B A0 A1 D0.B
-
- XDEF _P_SUBB
- _P_SUBB:
- move.l d2,-(sp)
- move.b d0,d1
- sne d1
- moveq.l #0,d2
- move.w _global_precision(a4),d2
- asl.l #2,d2
- add.l d2,a0
- add.l d2,a1
- asr.l #2,d2
- subq.l #1,d2
- asr.b #1,d1
- sub_loop:
- subx.l -(a1),-(a0)
- dbf d2,sub_loop
- scs d0
- move.l (sp)+,d2
- rts
-
- ; r1 = r1 << 1 | carry;
- ; boolean P_ROTL(unitptr r1, boolean carry)
- ; D0.B A0 D0.B
-
- XDEF _P_ROTL
- _P_ROTL:
- move.l d2,-(sp)
- move.b d0,d1
- sne d1
- moveq.l #0,d2
- move.w _global_precision(a4),d2
- asl.l #2,d2
- add.l d2,a0
- asr.l #1,d2
- subq.l #1,d2
- asr.b #1,d1
- rol_loop:
- roxl.w -(a0)
- dbf d2,rol_loop
- scs d0
- move.l (sp)+,d2
- rts
-
- XDEF @P_SETP
- @P_SETP:
- rts
-
- END
-